package com.cxdr.awsips.distribute.bean;

import java.io.File;
import java.io.ObjectInputStream.GetField;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 到报文件日志
 * 	1):CREATE_TIME,格式为yyyy-mm-dd hh24:mi:ss,系统当前时间
	2):REACH_TIME,格式为yyyy-mm-dd hh24:mi:ss,文件创建时间
	3):OBSER_TIME,格式为yyyy-mm-dd hh24:mi:ss,文件名中的时间
	4):PARTITION_MONTH:分区月的值为系统当前年月，格式为yyyy-mm
	5):CREATE_DAY:系统当前日
	6):CREATE_HOUR:系统当前时,格式为hh24
 * @author pugang
 */
public class ReportFileLog {
	private String ID;
	private Date create_time; // 记录时间
	private Date obser_time;// 观测时间
	private Date reach_time; // 到达时间
	private String partition_month; // 分区月
	private String file_name; //文件名
	private long file_size; //文件大小
	private String station_ID;// 区站号
	private boolean is_update;// 是否更新
	private int update_count; // 更新次数
	private String file_type; // 报文类型
	private String create_day;
	private String create_hour;
	private File file;
	public ReportFileLog() {

	}

	public ReportFileLog(File file) {
		this.file = file;
		parseAttr(file);
	}

	
	private void parseAttr(File file) {
		this.file_size = file.length();
		this.file_name = file.getName();
		//到达时间
		this.reach_time = new Date(file.lastModified());
		_parseFileNameAttr(file_name);
		//如果是更新文件则去掉更新标识
		if(file_name.contains("CC")){
			file_name.replaceAll("-CC[A-Z]", "");
		}
		
	}
	private void _parseFileNameAttr(String fileName){
		SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
		String[] infos = fileName.split("_");
		for(int i =0;i<infos.length;i++){
			String info = infos[i];
			if(info.length()==14){
				//观测时间
				try {
					obser_time =  format.parse(info);
//					System.out.println("obser_time "+obser_time);
					//this.partition_month=format1.format(obser_time);
				} catch (ParseException e) {
					e.printStackTrace();
					obser_time = reach_time;
				}
				continue;
			}
			//站号
			if("I".equalsIgnoreCase(info)||"C".equalsIgnoreCase(info)){
				info=infos[++i];
				info = info.replaceAll("-REG", "");
				station_ID = info;
				continue;
			}
			//包含更新
			if(info.contains("CC")){
				//是否更新
				is_update = true;
				//更新次数
				update_count = (int)(info.charAt(info.length()-5)-'A'+1);
				continue;
			}
			//文件类型
		}
		if(fileName.contains("O_AWS_FTM")){
			file_type=FileType.E.name();//"地面气象要素数据文件";
		}
		if(fileName.contains("O_AWS-PRF_FTM")){
			file_type=FileType.N.name();//"地面自动站雨量观测资料";
		}
		if(fileName.contains("O_AWS_DAY")){
			file_type=FileType.D.name();//"自动站日数据文件";
		}
		if(fileName.contains("R_AWS_FTM")){
			file_type=FileType.Z.name();//"自动站状态信息文件";
		}
		if(fileName.contains("O_ARS_FTM")){
			file_type=FileType.R.name();//"自动站气象辐射资料";
		}
	}
	@Override
	public boolean equals(Object o) {
		if (o != null) {
			if (this == o) {
				return true;
			}
			if (o instanceof ReportFileLog) {
				ReportFileLog _temp = (ReportFileLog) o;
				if (_temp.getFile_name() != null) {
					return _temp.getFile_name().equalsIgnoreCase(this.file_name);
				}
			}
		}
		return false;
	}
	

	public String getID() {
		return ID;
	}

	public void setID(String iD) {
		ID = iD;
	}

	public Date getCreate_time() {
		return create_time;
	}

	public void setCreate_time(Date create_time) {
		this.create_time = create_time;
	}

	public Date getObser_time() {
		return obser_time;
	}

	public void setObser_time(Date obser_time) {
		this.obser_time = obser_time;
	}

	public Date getReach_time() {
		return reach_time;
	}

	public void setReach_time(Date reach_time) {
		this.reach_time = reach_time;
	}

	public String getPartition_month() {
		return partition_month;
	}

	public void setPartition_month(String partition_month) {
		this.partition_month = partition_month;
	}

	public String getFile_name() {
		return file_name;
	}

	public void setFile_name(String file_name) {
		setFile_name(file_name,false);
	}
	public void setFile_name(String file_name,boolean overattr){
		this.file_name = file_name;
		if(overattr){
			_parseFileNameAttr(file_name);
			
		}
	}

	public long getFile_size() {
		return file_size;
	}

	public void setFile_size(long file_size) {
		this.file_size = file_size;
	}

	public String getStation_ID() {
		return station_ID;
	}

	public void setStation_ID(String station_ID) {
		this.station_ID = station_ID;
	}

	public boolean isIs_update() {
		return is_update;
	}

	public void setIs_update(boolean is_update) {
		this.is_update = is_update;
	}

	public int getUpdate_count() {
		return update_count;
	}

	public void setUpdate_count(int update_count) {
		this.update_count = update_count;
	}

	public String getFile_type() {
		return file_type;
	}

	public void setFile_type(String file_type) {
		this.file_type = file_type;
	}

	public String getCreate_day() {
		return create_day;
	}

	public void setCreate_day(String create_day) {
		this.create_day = create_day;
	}

	public String getCreate_hour() {
		return create_hour;
	}

	public void setCreate_hour(String create_hour) {
		this.create_hour = create_hour;
	}

	public File getFile() {
		return file;
	}

	public void setFile(File file) {
		this.file = file;
	}
}
